
package com.foundersoftware.commons.organization.model;

import java.util.Date;
import java.util.Set;

/**This class represents the organization unit in the real world, such as Company, Department
 * @author Hongjun Wu
 * @version 3.0
 */
public class OrganizationUnit extends AbstractOrganizationObject {

	private static final long serialVersionUID = 3127568497363153251L;
	private OrganizationUnitType organizationUnitType;
	private Employee leader;
    private String status;
    private Date createdDate;
    private Date lastModifiedDate;
    
    private OrganizationUnit parent;
    private Set<OrganizationUnit> childrens;
    /**
     * 
     */
    private Set<Employee> employers;
    /**
     * 
     */
    private Set<Role> roles;
    /**
     * 
     */
    private Set<Position> positions;
    /**
     * 
     */
    private Set<WorkGroup> workGroups;
    


    public Date getCreatedDate() {
		return createdDate;
	}

	public void setCreatedDate(Date createdDate) {
		this.createdDate = createdDate;
	}

	public Date getLastModifiedDate() {
		return lastModifiedDate;
	}

	public void setLastModifiedDate(Date lastModifiedDate) {
		this.lastModifiedDate = lastModifiedDate;
	}

	public OrganizationUnitType getOrganizationUnitType() {
        return organizationUnitType;
    }

    public String getStatus() {
        return status;
    }

    public void setOrganizationUnitType(OrganizationUnitType
                                        organizationUnitType) {
        this.organizationUnitType = organizationUnitType;
    }

    public void setStatus(String status) {
        this.status = status;
    }

	public Employee getLeader() {
		return leader;
	}

	public void setLeader(Employee leader) {
		this.leader = leader;
	}

	public OrganizationUnit getParent() {
		return parent;
	}

	public void setParent(OrganizationUnit parent) {
		this.parent = parent;
	}

	public Set<OrganizationUnit> getChildrens() {
		return childrens;
	}

	public void setChildrens(Set<OrganizationUnit> childrens) {
		this.childrens = childrens;
	}

	public Set<Employee> getEmployers() {
		return employers;
	}

	public void setEmployers(Set<Employee> employers) {
		this.employers = employers;
	}

	public Set<Role> getRoles() {
		return roles;
	}

	public void setRoles(Set<Role> roles) {
		this.roles = roles;
	}

	public Set<Position> getPositions() {
		return positions;
	}

	public void setPositions(Set<Position> positions) {
		this.positions = positions;
	}

	public Set<WorkGroup> getWorkGroups() {
		return workGroups;
	}

	public void setWorkGroups(Set<WorkGroup> workGroups) {
		this.workGroups = workGroups;
	}
}
